home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / gg / ncurses-5.3.lha / ncurses-5.3 / Ada95 / samples / sample-form_demo.adb < prev    next >
Text File  |  2002-10-24  |  6KB  |  136 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                       GNAT ncurses Binding Samples                       --
  4. --                                                                          --
  5. --                             Sample.Form_Demo                             --
  6. --                                                                          --
  7. --                                 B O D Y                                  --
  8. --                                                                          --
  9. ------------------------------------------------------------------------------
  10. -- Copyright (c) 1998 Free Software Foundation, Inc.                        --
  11. --                                                                          --
  12. -- Permission is hereby granted, free of charge, to any person obtaining a  --
  13. -- copy of this software and associated documentation files (the            --
  14. -- "Software"), to deal in the Software without restriction, including      --
  15. -- without limitation the rights to use, copy, modify, merge, publish,      --
  16. -- distribute, distribute with modifications, sublicense, and/or sell       --
  17. -- copies of the Software, and to permit persons to whom the Software is    --
  18. -- furnished to do so, subject to the following conditions:                 --
  19. --                                                                          --
  20. -- The above copyright notice and this permission notice shall be included  --
  21. -- in all copies or substantial portions of the Software.                   --
  22. --                                                                          --
  23. -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
  24. -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
  25. -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
  26. -- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
  27. -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
  28. -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
  29. -- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
  30. --                                                                          --
  31. -- Except as contained in this notice, the name(s) of the above copyright   --
  32. -- holders shall not be used in advertising or otherwise to promote the     --
  33. -- sale, use or other dealings in this Software without prior written       --
  34. -- authorization.                                                           --
  35. ------------------------------------------------------------------------------
  36. --  Author:  Juergen Pfeifer, 1996
  37. --  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
  38. --  Version Control
  39. --  $Revision: 1.9 $
  40. --  Binding Version 01.00
  41. ------------------------------------------------------------------------------
  42. with Terminal_Interface.Curses; use Terminal_Interface.Curses;
  43. with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms;
  44. with Terminal_Interface.Curses.Forms.Field_User_Data;
  45. with Terminal_Interface.Curses.Forms.Form_User_Data;
  46. with Sample.My_Field_Type; use Sample.My_Field_Type;
  47. with Sample.Explanation; use Sample.Explanation;
  48. with Sample.Form_Demo.Aux; use Sample.Form_Demo.Aux;
  49. with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
  50. with Sample.Form_Demo.Handler;
  51.  
  52. with Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
  53. with Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
  54. use  Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
  55. with Terminal_Interface.Curses.Forms.Field_Types.IntField;
  56. use  Terminal_Interface.Curses.Forms.Field_Types.IntField;
  57.  
  58. package body Sample.Form_Demo is
  59.  
  60.    type User_Data is
  61.       record
  62.          Data : Integer;
  63.       end record;
  64.    type User_Access is access User_Data;
  65.  
  66.    package Fld_U is new
  67.      Terminal_Interface.Curses.Forms.Field_User_Data (User_Data,
  68.                                                       User_Access);
  69.  
  70.    package Frm_U is new
  71.      Terminal_Interface.Curses.Forms.Form_User_Data (User_Data,
  72.                                                      User_Access);
  73.  
  74.    type Weekday is (Sunday, Monday, Tuesday, Wednesday, Thursday,
  75.                     Friday, Saturday);
  76.  
  77.    package Weekday_Enum is new
  78.      Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada (Weekday);
  79.  
  80.    Enum_Field : constant Enumeration_Field :=
  81.      Weekday_Enum.Create;
  82.  
  83.    procedure Demo
  84.    is
  85.  
  86.       Mft : My_Data := (Ch => 'X');
  87.  
  88.       FA : Field_Array_Access := new Field_Array'
  89.         (Make (0, 14, "Sample Entry Form"),
  90.          Make (2, 0,  "WeekdayEnumeration"),
  91.          Make (2, 20, "Numeric 1-10"),
  92.          Make (2, 34, "Only 'X'"),
  93.          Make (5, 0, "Multiple Lines offscreen(Scroll)"),
  94.          Make (Width => 18, Top => 3, Left =>  0),
  95.          Make (Width => 12, Top => 3, Left => 20),
  96.          Make (Width => 12, Top => 3, Left => 34),
  97.          Make (Width => 46, Top => 6, Left => 0, Height => 4, Off_Screen => 2),
  98.          Null_Field
  99.          );
  100.  
  101.       Frm : Terminal_Interface.Curses.Forms.Form := Create (FA);
  102.  
  103.       I_F : constant Integer_Field := (Precision   => 0,
  104.                                        Lower_Limit => 1,
  105.                                        Upper_Limit => 10);
  106.  
  107.       F1, F2 : User_Access;
  108.  
  109.       package Fh is new Sample.Form_Demo.Handler (Default_Driver);
  110.  
  111.    begin
  112.       Push_Environment ("FORM00");
  113.       Notepad ("FORM-PAD00");
  114.       Default_Labels;
  115.  
  116.       Set_Field_Type (FA (6), Enum_Field);
  117.       Set_Field_Type (FA (7), I_F);
  118.       Set_Field_Type (FA (8), Mft);
  119.  
  120.       F1 := new User_Data'(Data => 4711);
  121.       Fld_U.Set_User_Data (FA (1), F1);
  122.  
  123.       Fh.Drive_Me (Frm);
  124.  
  125.       Fld_U.Get_User_Data (FA (1), F2);
  126.       pragma Assert (F1 = F2);
  127.       pragma Assert (F1.Data = F2.Data);
  128.  
  129.       Pop_Environment;
  130.       Delete (Frm);
  131.  
  132.       Free (FA, True);
  133.    end Demo;
  134.  
  135. end Sample.Form_Demo;
  136.